package com.study.concurrentprogramming.genericiy;

import java.lang.reflect.TypeVariable;

/**
 * @Description : 类型变量学习
 * @Author : guxuemin
 * @Version : V1.0.0
 * @Date : 2021/8/14 22:50
 */
public class TypeVariableTest<K extends Number, T> {
    // K有指定上边界 Number
    private K key;
    // T没有指定上边界,其默认上边界为Object
    private T value;

    public static void main(String[] args) {
        TypeVariable<Class<TypeVariableTest>>[] typeParameters = TypeVariableTest.class.getTypeParameters();
        for (TypeVariable<Class<TypeVariableTest>> type : typeParameters) {
            int index = type.getBounds().length - 1;
            // 输出上边界
            System.out.println("---getBounds()-- " + type.getBounds()[index]);
            // 输出名称
            System.out.println("---getName()-- " + type.getName());
            // 输出所在的类的类型
            System.out.println("---getGenericDeclaration()-- " + type.getGenericDeclaration());
        }
    }
}
